home *** CD-ROM | disk | FTP | other *** search
/ Aminet 19 / Aminet 19 (1997)(GTI - Schatztruhe)[!][Jun 1997].iso / Aminet / comm / maxs / dfbv13.lha / dfb / Developers / dfb.doc < prev    next >
Text File  |  1980-01-15  |  46KB  |  1,264 lines

  1. TABLE OF CONTENTS
  2.  
  3. dfb.library/OpenFileBase
  4. dfb.library/CloseFileBase
  5. dfb.library/ReadNextFile
  6. dfb.library/ReadLastFile
  7. dfb.library/AddFile        
  8. dfb.library/ModifyFile    
  9. dfb.library/PurgeFileBase
  10. dfb.library/ConvertTime    
  11. dfb.library/FixTime        
  12. dfb.library/GetFileList    
  13. dfb.library/GetFileIDDiz
  14. dfb.library/LoadMarkedList
  15. dfb.library/SaveMarkedList
  16. dfb.library/AddMarkedList
  17. dfb.library/SubMarkedList
  18. dfb.library/DisplayNode    
  19. dfb.library/FixName        
  20. dfb.library/DateToAscii    
  21. dfb.library/TimeToAscii    
  22. dfb.library/GetFileDir    
  23. dfb.library/FindFile    
  24. dfb.library/IsMarked    
  25. dfb.library/ Reserved
  26. dfb.library/Decrement    
  27. dfb.library/AsciiToDate    
  28. dfb.library/AsciiToTime    
  29. dfb.library/LoadPrefs    
  30. dfb.library/AddSection    
  31. dfb.library/SavePrefs    
  32. dfb.library/AddUser        
  33. dfb.library/GetUser        
  34. dfb.library/SaveUser    
  35. dfb.library/ Reserved
  36. dfb.library/ Reserved
  37. dfb.library/OnUpload    
  38. dfb.library/ Reserved
  39. dfb.library/GetFilePaths
  40. dfb.library/ Reserved
  41. dfb.library/ Reserved
  42. dfb.library/EditFile
  43. dfb.library/StealMaxsDevice
  44. dfb.library/ReleaseMaxsDevice
  45. dfb.library/ReceiveFiles
  46. dfb.library/SendFiles
  47. dfb.library/GetMarkedListNext
  48. dfb.library/ Reserved
  49. dfb.library/ Reserved
  50. dfb.library/OpenFileBase                            dfb.library/OpenFileBase
  51.  
  52.    NAME
  53.     OpenFileBase -- Opens file base and loads preferences
  54.     
  55.    SYNOPSIS
  56.     handle = OpenFileBase(type, datafile);
  57.     D0                    D0    A1
  58.     
  59.     struct dfbFileBase *OpenFileBase(int type, char *DataFile);
  60.     
  61.    FUNCTION
  62.     Opens the file dfb:dfb.data and loads a copy of the preferences file
  63.     dfb:dfb.prefs into memory. This function is used when you need to
  64.     read, write or modify the file base. If there is no file base this
  65.     routine will create it for you.
  66.     
  67.    INPUTS
  68.     type - 
  69.      ATSTART - This will open the file base positioned at the start
  70.                I.e Before the first file.
  71.      ATEND   - This will open the file base positioned at the end
  72.                I.e After the last file.
  73.      STARTLOCK - This will open the file base at the start with an
  74.                exclusive DOS lock. Programmes should not require this.
  75.  
  76.      Keep A1 null. In future versions of DFB (probably 1.3) this will
  77.      be the data file's name to load in.
  78.  
  79.    RESULT
  80.     handle - pointer to the handle structure, or NULL if failure.
  81.  
  82.    SEE ALSO
  83.     CloseFileBase()
  84.  
  85. dfb.library/CloseFileBase                          dfb.library/CloseFileBase   
  86.                                            
  87.    NAME
  88.     CloseFileBase -- Closes the file base and frees memory
  89.     
  90.    SYNOPSIS
  91.     CloseFileBase(handle);
  92.                    d1
  93.                    
  94.     VOID CloseFileBase(struct dfbFileBase *Handle);                             
  95.  
  96.    FUNCTION
  97.     Closes the file base opened from OpenFileBase. Frees memory taken
  98.     from OpenFileBase.
  99.  
  100.    INPUTS
  101.     handle which we got when we opened the file base with OpenFileBase.
  102.            
  103. dfb.library/ReadNextFile                            dfb.library/ReadNextFile     
  104.  
  105.    NAME
  106.     ReadNextFile -- Reads in the next file in the file base
  107.     
  108.    SYNOPSIS
  109.     ok = ReadNextFile(free memory, handle structure, mode);
  110.     D0                A0           D0                D1
  111.     
  112.     int = ReadNextFile(char *memory, struct dfbFileBase *Handle, int mode);
  113.     
  114.    FUNCTION
  115.     Reads in the next file node in the file base into the memory specified 
  116.     by A0. Before calling this function you need to find out how much
  117.     memory the next file node will occupy. This value is stored in the
  118.     handle structure at OF_NEXTLENGTH.
  119.     
  120.     The memory specified by A0 will first be filled with the file node
  121.     structure (this contains pointers to file name, file description etc,
  122.     and it also contains all the other relavent information). After the
  123.     file node structure the remaining memory will be filled with the 
  124.     file name, uploader, uploader's alias and file description.
  125.  
  126.     N.B: You should always ignore files marked with the ASTALAVISTA flag in
  127.     the of_status byte. These files have either been zotted by a sysop
  128.     or have been moved to the end of the file base (see modify file).
  129.     (V1.01+ or dfb.library has detected a corrupted area in the file base and
  130.     skips the file(s))
  131.  
  132.     If d0 is non zero an error occured.
  133.     
  134.    INPUTS
  135.     free memory - free memory which will be filled with the file node and
  136.                   information. The size should be at least the size of
  137.                   OF_NEXTLENGTH.  
  138.     handle structure - The pointer to the handle structure you got when you
  139.                   called OpenFileBase.
  140.     mode - Keep this value clear. 
  141.            
  142.            There is a QUICKMODE which enables you
  143.            to read in the file node structure in internal format.
  144.            Programmers should not use this mode.                    
  145.  
  146.    SEE ALSO
  147.     OpenFileBase(), ReadLastFile()
  148.  
  149. dfb.library/ReadLastFile                            dfb.library/ReadLastFile     
  150.  
  151.    NAME
  152.     ReadLastFile -- Reads in the last file in the file base
  153.     
  154.    SYNOPSIS
  155.     ok = ReadLastFile(free memory, handle structure, mode)
  156.     D0                A0           D0                D1
  157.     
  158.     int = ReadLastFile(char *memory, struct dfbFileBase *Handle, int mode)
  159.     
  160.    FUNCTION
  161.     Reads in the last file node in the file base into the memory specified 
  162.     by A0. Before calling this function you need to find out how much
  163.     memory the next file node will occupy. This value is stored in the
  164.     handle structure at OF_LENGTH.
  165.     
  166.     The memory specified by A0 will first be filled with the file node
  167.     structure (this contains pointers to file name, file description etc,
  168.     and it also contains all the other relavent information). After the
  169.     file node structure the remaining memory will be filled with the 
  170.     file name, uploader, uploader's alias and file description.
  171.  
  172.     N.B: You should always ignore files marked with the ASTALAVISTA flag in
  173.     the of_status byte. These files have either been zotted by a sysop
  174.     or have been moved to the end of the file base (see modify file).
  175.  
  176.     If d0 is non zero an error occured.
  177.     
  178.    INPUTS
  179.     free memory - free memory which will be filled with the file node and
  180.                   information. The size should be at least the size of
  181.                   OF_LENGTH.  
  182.     handle structure - The pointer to the handle structure you got when you
  183.                   called OpenFileBase.
  184.     mode - Keep this value clear. 
  185.            
  186.            There is a QUICKMODE which enables you
  187.            to read in the file node structure in internal format.
  188.            Programmers should not need this mode.                    
  189.  
  190.    SEE ALSO
  191.     OpenFileBase(), ReadNextFile()
  192.                     
  193. dfb.library/AddFile                                      dfb.library/AddFile     
  194.  
  195.    NAME
  196.     AddFile -- Adds a file to the file base.    
  197.     
  198.    SYNOPSIS
  199.     ok = AddFile( handle structure, file node structure,);
  200.     D0                D0              A0            
  201.     
  202.     LONG = AddFile(struct dfbFileBase *Handle, struct dfbFile *File);
  203.     
  204.    FUNCTION
  205.     Adds in a file node to the file base, incrememnts the number of files in
  206.     the file base. Before you use this command you must call OpenFileBase
  207.     first to get the handle structure, n.b: you shouldn't open the file
  208.     base first with exclusive lock - just open it up as you usually would.
  209.  
  210.     If there was an error D0 will return non-zero.
  211.                              
  212.    INPUTS  
  213.    
  214.     file node structure - The pointers to the strings: uploader, uploader's
  215.                      alias, file name and description must be set. Or zero
  216.                      if not present. The field FB_LENGTH does not need to
  217.                      be set. AddFile will work this out for you. 
  218.     handle structure - What you got after calling OpenFileBase
  219.  
  220.    SEE ALSO
  221.     OpenFileBase()
  222.  
  223. dfb.library/ModifyFile                                dfb.library/ModifyFile     
  224.  
  225.    NAME
  226.     ModifyFile -- Modifies a file in the file base.    
  227.     
  228.    SYNOPSIS
  229.     ok = ModifyFile(file node structure, handle structure);
  230.                            A0              D0            
  231.     
  232.     int = ModifyFile(struct dfbFile *File, struct dfbFileBase *Handle);
  233.     
  234.    FUNCTION
  235.     This command modifies the next file in the file base. E.g: If you have
  236.     just opened the file base at the start, read the first node in and 
  237.     called this function, the second file node will be modified.
  238.     
  239.     For example, if you have just read in a file node with ReadNextFile and
  240.     want to modify that file, before you call this command you will need to 
  241.     call ReadLastFile to get back to it then call this function.
  242.     
  243.     N.B: If you were reading the files backwards, e.g: you opened the file
  244.     base at the end and called ReadLastFile and you wish to modify that file
  245.     node then you can call ModifyFile straight after and it will modify the
  246.     correct file.
  247.     
  248.     Since DFB is dynamic if you edit a file and give it say a longer 
  249.     description it may not be able to fit into its current position
  250.     so what DFB does is mark the old position with a ASTALAVISTA flag which
  251.     tells ReadDFB to ignore that node. (you should always skip files marked
  252.     with ASTALAVISTA.) It will then append the new file node to the end of
  253.     the file base.
  254.     
  255.    NOTES
  256.     If you modify a file to be ASTALAVISTA you *MUST* decrement the number
  257.     of files in the file base, to do this call Decrement().
  258.  
  259.     Never clear the bit ASTALAVISTA if it has already been set.
  260.  
  261.    INPUTS
  262.     File node structure - A pointer to the new file node structure which 
  263.                    should overwrite the old one. N.B: The FB_LENGTH field 
  264.                    need not be correct since ModifyFile works it out for you.
  265.  
  266.    SEE ALSO
  267.     OpenFileBase(), Decrement()
  268.  
  269. dfb.library/PurgeFileBase                          dfb.library/PurgeFileBase     
  270.  
  271.    NAME
  272.     PurgeFileBase - Optimizes file base, can delete files marked for deletion
  273.                     Removes all file nodes marked with ASTALAVISTA.
  274.     
  275.    SYNOPSIS
  276.     ok = PurgeFileBase();
  277.     D0              
  278.     
  279.     LONG = PurgeFileBase(VOID);
  280.     
  281.    FUNCTION
  282.     PurgeFileBase performs some very basic housekeeping functions (it is
  283.     not the file manager), such as deleting files marked with deleted
  284.     (if the bit pfb_delonpurge is set in the file preferences)
  285.     and also removing all file nodes marked with ASTALAVISTA and/or DELETED.
  286.  
  287.     PurgeFileBase creates a temporary file base in memory so if your 
  288.     file base is 500K you should have at least that memory free in ram.
  289.     
  290.     This function should not be called if any other programme currently
  291.     has the file base opened.    
  292.  
  293.     N.B: This routine can take several minutes to run so do not use it lightly.
  294.     
  295.     If D0 is non zero an error occured. 
  296.     
  297. dfb.library/ConvertTime                              dfb.library/ConvertTime
  298.  
  299.    NAME
  300.     ConvertTime - converts from Amiga DateStamp time to something useful.
  301.     
  302.    SYNOPSIS
  303.     minute, hour, day, month, year = ConvertTime(days, mins);
  304.     D0      D1    D2   D3     D4                 D0    D1
  305.             
  306.    FUNCTION
  307.     Converts from 'amiga' time to something useful. I think a similar
  308.     (and probably) better function is available in utilities.library but
  309.     at the time of writing this function I didn't know about it so this is
  310.     the one DFB uses.
  311.     
  312.     D0 - returns the number of minutes past the hour,
  313.     D1 - the number of hours past the start of the day
  314.     D2 - the day number of the month
  315.     D3 - the month of the year
  316.     D4 - the year of the file
  317.  
  318.    INPUTS
  319.     D0 - ds_days from DateStamp
  320.     D1 - ds_minutes from DateStamp    
  321.  
  322.    SEE ALSO
  323.     FixTime(), TimeToAscii(), DateToAscii()
  324.     
  325. dfb.library/FixTime                                      dfb.library/FixTime
  326.  
  327.    NAME
  328.     FixTime - Puts the current time into a file node.
  329.     
  330.    SYNOPSIS
  331.     FixTime (file node structure);
  332.              A0
  333.     
  334.     VOID = FixTime (struct File *);   
  335.     
  336.    FUNCTION
  337.     Calls DateStamp from dos.library to get the current time, it then 
  338.     calls ConvertTime from dfb.library to convert the time to a useful
  339.     format. It then places the min, hour, day, month and year into
  340.     fb_min, fb_hour, fb_day etc.
  341.     
  342.    INPUTS
  343.     file node structure - pointer to file node structure which you wish
  344.                           to have the time updated.
  345.  
  346.    SEE ALSO
  347.     ConvertTime()
  348.  
  349. dfb.library/GetFileList                              dfb.library/GetFileList
  350.  
  351.    NAME
  352.     GetFileList - executes the command in the third column of DFBArchivers.
  353.                                         
  354.    SYNOPSIS
  355.     ok = GetFileList(path and filename, preferences);
  356.     D0               A0        A1
  357.     
  358.     LONG = GetFileList(STRPTR *, struct preferences *);
  359.     
  360.    FUNCTION
  361.     When this function is called, GetFileList will first examine the
  362.     extension of the filename. (E.g .lha, .lzh etc), it will then locate the
  363.     correct row and then it will execute the command found in the third
  364.     box on that row. Replacing the '<>' with the path and filename given.
  365.  
  366.     This function is generally used by ReadDFB to view files online, so
  367.     the result of this function call will typically create a file in ram:
  368.     called 'ListX' which may be, say the file list in an archive.
  369.     
  370.     If D0=0 the file ListX was created ok.
  371.     If D0=-1 the file had a text extension (so read the file directly)    
  372.     If D0=-2 the file did not have an extension given in the preference file.    
  373.  
  374.    INPUTS
  375.     path and filename - a pointer to the file name (including full path)
  376.                         which you wish to use.
  377.     preferences - a pointer to a copy of DFB's preferences, this can be got
  378.                   by a call to either LoadPrefs or OpenFileBase the later                        
  379.                   having a pointer to preferences in the handle structure
  380.                   at OF_PREFERNCES.)
  381.  
  382.     SEE ALSO
  383.      GetFileIDDiz(), OnUpload()
  384.        
  385. dfb.library/GetFileIDDiz                            dfb.library/GetFileIDDiz
  386.  
  387.    NAME
  388.     GetFileIDDiz - extracts a file_id.diz from a file.
  389.                                         
  390.    SYNOPSIS
  391.     description, length = GetFileIDDiz(path and filename, preferences);
  392.     A0           D0                    A0                 A1
  393.     
  394.     STRPTR *, ULONG = GetFileIDDiz(STRPTR *, struct preferences *)
  395.     
  396.    FUNCTION
  397.     When this function is called DFB will extract the file_id.diz from the
  398.     file given. The file, file_id.diz, will be created in the current 
  399.     directory. It will then be read, a pointer to it is given in A0 and the
  400.     length in D0. The file_id.diz will then be deleted.
  401.     
  402.     If D0=0 there was no file_id.diz
  403.     If D0=-1 then an error occured, else D0 equals length of the file
  404.     file_id.diz which is loaded.
  405.     
  406.     N.B: You must free the memory once you have finished with it
  407.     
  408.     E.g:
  409.  
  410.         move.l    dfbhandle,a5            ;handle received from OpenFileBase
  411.         lea        filename,a0
  412.         move.l    of_preferences(a5),a1    ;get preferences
  413.         CALLDFB    GetFileIDDiz
  414.         tst.l    d0                        ;file_id.diz exist?
  415.         beq        nodiz
  416.         cmp.l    #-1,d0                    ;error?
  417.         beq        nodiz    
  418.         move.l    a0,a5                    ;remember address & size
  419.         move.l    d0,d5
  420.  
  421.         ; use the file_id.diz
  422.  
  423.         move.l    a5,a1                    ;free file_id.diz from memory
  424.         move.l    d5,d0
  425.         CALLEXEC    FreeMem
  426. nodiz    rts
  427.  
  428. filename
  429.         dc.b    'hd1:bbs/newfiles/ademo.dms',0
  430.         
  431.    INPUTS
  432.     path and filename - a pointer to the file name (including full path)
  433.                         which you wish to use.
  434.     preferences - a pointer to a copy of DFB's preferences, this can be got
  435.                   by a call to either LoadPrefs or OpenFileBase the later                        
  436.                   having a pointer to preferences in the handle structure
  437.                   at OF_PREFERNCES.)
  438.  
  439.    SEE ALSO
  440.     GetFileList(), OnUpload()
  441.        
  442. dfb.library/LoadMarkedList                        dfb.library/LoadMarkedList
  443.  
  444.    NAME
  445.     LoadMarkedList - loads the user's marked (tagged) files.
  446.                                         
  447.    SYNOPSIS
  448.     marked list, current length = LoadMarkedList(user's name);
  449.     A0           D0                              A0                 
  450.  
  451.     STRPTR *, ULONG = LoadMarkedList(STRPTR *);
  452.     
  453.    FUNCTION 
  454.     This function is used to load a copy of the user's currently marked files,
  455.     in essence this function gets the user's name, converts it to a dos
  456.     format, adds in dfbtag:dfbml. and then loads it into memory, A0 points to
  457.     the marked list and D0 is the size of it.
  458.     
  459.     E.g:
  460.     
  461.     If the user was say Andrew Leppard this function would open the file:    
  462.         
  463.     DFBTag:DFBML.Andrew_Leppard
  464.     
  465.     The marked list is a null terminated text file with $0a's after each file
  466.     name. The file names are always lower case to help in file name 
  467.     matching. When loading the marked list this function will convert all
  468.     names to lower case for you. 
  469.     
  470.    INPUTS
  471.     user's name: A string pointer to the user's name.
  472.  
  473.    SEE ALSO
  474.     SaveMarkedList(), AddMarkedList(), SubMarkedList(), IsMarked(),
  475.     GetMarkedListNext()
  476.  
  477. dfb.library/SaveMarkedList                        dfb.library/SaveMarkedList
  478.  
  479.    NAME
  480.     SaveMarkedList - saves the user's marked (tagged) files.
  481.                                         
  482.    SYNOPSIS
  483.     SaveMarkedList(user's name, marked list, final size);
  484.                    A0           A1           D0             
  485.  
  486.     VOID = SaveMarkedList(STRPTR *, ULONG, ULONG);
  487.     
  488.    FUNCTION 
  489.     Saves a copy of the user's marked list to a text file, A1 is a pointer
  490.     to null terminated text, where each file is seperated by a $0A
  491.     character. D0 is the length of this text. If there are no marked files
  492.     in the marked file list, SaveMarkedList will delete the file on disk.
  493.     
  494.    INPUTS
  495.     user's name: a pointer to a string of the user's name whom you wish
  496.                  to save his/r marked files
  497.     marked list: pointer to the marked files 
  498.     final size:  current (or final) size of marked file list                 
  499.  
  500.    SEE ALSO
  501.     LoadMarkedList(), AddMarkedList(), SubMarkedList(), IsMarked(),
  502.     GetMarkedListNext()
  503.             
  504. dfb.library/AddMarkedList                          dfb.library/AddMarkedList
  505.  
  506.    NAME
  507.     AddMarkedList - adds a file to the user's marked list
  508.                                         
  509.    SYNOPSIS
  510.     sucess, newsize = AddMarkedList(Marked list, Name to add, Current Size);
  511.     D0      D1                      A0           A1           D0
  512.  
  513.     ULONG, ULONG = AddMarkedList(ULONG, STRPTR *, ULONG);
  514.     
  515.    FUNCTION 
  516.     Adds a file to the marked file list, first it checks whether the file
  517.     will fit (the marked file list has a maximum size of 1K for file names),
  518.     if not D0 returns a -1 else null. It then converts the file's name to
  519.     lower case then adds it to the end of the marked list. The new size of
  520.     the marked file list is then calculated and returned.
  521.     
  522.    INPUTS
  523.     marked list - pointer to the marked file list
  524.     name to add - the file name to add
  525.     current size - the current size of the marked list
  526.     
  527.    SEE ALSO
  528.     SaveMarkedList(), LoadMarkedList(), SubMarkedList(), IsMarked(),   
  529.     GetMarkedListNext()
  530.  
  531. dfb.library/SubMarkedList                          dfb.library/SubMarkedList
  532.  
  533.    NAME
  534.     SubMarkedList - removes a file from the user's marked list
  535.                                         
  536.    SYNOPSIS
  537.     sucess, newsize = SubMarkedList(Marked list, Name to sub, Current Size);
  538.     D0      D1                      A0           A1           D0
  539.     
  540.    FUNCTION
  541.     Removes a file from the marked list, if the file is not found in the
  542.     marked list a -1 will be returned in D0 else null. The new size of the
  543.     list will be returned in D1. 
  544.     
  545.    INPUTS
  546.     marked list - pointer to the marked file list
  547.     name to sub - the file name to remove
  548.     current size - the current size of the marked list
  549.     
  550.    SEE ALSO
  551.     SaveMarkedList(), LoadMarkedList(), AddMarkedList(), IsMarked(),
  552.     GetMarkedListNext()
  553.  
  554. dfb.library/DisplayNode                              dfb.library/DisplayNode
  555.  
  556.    NAME
  557.     DisplayNode - converts a file node structure to ready-to-display ansi 
  558.  
  559.    SYNOPSIS
  560.     ptr to lines, spaces for name, name offset =
  561.     A0            D0               D1    
  562.     
  563.     DisplayNode(file node structure, free space, marked list, file handle
  564.                 A0                   A1          A2           A3 
  565.     
  566.     structure, compressed data structure, marked list size, name offset,  
  567.                A4                         D0                D1  
  568.  
  569.     early stop mask, user access)              
  570.     D2               D3
  571.     
  572.    FUNCTION
  573.     I'll be the first to admit this function is extremly messy, in a 
  574.     future version of the library there will be an easier way of calling
  575.     this function. The reason it's included here is because it is
  576.     _extremly_ powerful. This is the main basis for ReadDFB, this function
  577.     handles almost ALL of the file display. It takes into account file
  578.     layouts, highlighted files, files with shifted names and the access of
  579.     the user viewing the files.
  580.     
  581.     DisplayNode consults the compressed data (if given) to work out how to
  582.     display the file, it then systematically constructs an ansi text
  583.     display of the file, performing all the messy hex->ascii and date->ascii
  584.     conversions.
  585.     
  586.     It then returns in A0 a list of all the ansi lines, null terminated and
  587.     ready to display. The list is a simple null terminated list of addresses,
  588.     each longword being a pointer to a text line.
  589.  
  590.     Sometimes the name can not fit in the display ansi so DFB returns how
  591.     many characters of the name was displayed in D0.
  592.         
  593.     N.B: Only one list from DisplayNode can be kept at any one time, if you
  594.     call this function again the original list will be changed. Infact it
  595.     is recommended to use this list immediately since any future calls by
  596.     your process to dfb.library may change it.
  597.     
  598.    INPUTS
  599.     file node structure - a pointer to the file node you wish to display
  600.     free space -          allow at least 1Kb for the display ansi
  601.     marked list -         a pointer to the marked list if you want marked 
  602.                           files to be highlighted. If not point to a null 
  603.                           byte and set marked list size to 0.
  604.     file handle structure - a pointer to the file handle you got with 
  605.                           OpenFileBase()
  606.     compressed data structure - a pointer to the compressed (layout) data you
  607.                           wish to use. If you wish to use the default you
  608.                           may set this to 0.
  609.     marked list size -    length of the marked list, if you do not wish to
  610.                           use a marked list set this to 0.
  611.     name offset -         In ReadDFB the name can be scrolled left and right 
  612.                           with the arrow keys. This allows the name to be 
  613.                           shifted.
  614.     early stop mask -     You can tell DisplayNode to stop when it reaches a
  615.                           certain point. Currently only: AFB_STATUS is
  616.                           supported which means stop after displaying file
  617.                           status (e.g: offline etc). Set to null if you want
  618.                           all of the file displayed.                                                                                                                           
  619.     user access -         Like in ReadDFB users' see more information if they
  620.                           have higher access. So put in the user's access you
  621.                           wish to emulate here. N.B: DisplayNode does _NOT_
  622.                           check whether the user has access to see this file
  623.                           or not.
  624.  
  625.    SEE ALSO
  626.     FixName()
  627.     
  628. dfb.library/FixName                                      dfb.library/FixName
  629.  
  630.    NAME
  631.     FixName - Performs DisplayNode but _only_ on file name
  632.  
  633.    SYNOPSIS
  634.     pointer to line = FixName(file node structure, free space, marked list, 
  635.     A0                        A0                   A1          A2    
  636.                       
  637.     file handle structure, size of marked list, name offset, name size);
  638.     A3                     D0                   D1           D2                                                   
  639.     
  640.    FUNCTION
  641.     In ReadDFB, displaying the name of the file has many complications, 
  642.     this function handles all of them, being: Space for name, 
  643.     highlighting (marked), offset. It returns a pointer to the one ansi
  644.     line for the new display.
  645.     
  646.     This function does _NOT_ take into account compressed (layout) data, it
  647.     assumes that the name is followed directly by the status and that the 
  648.     name is at the beginning of the line. This function will become
  649.     obsolete so it is not recommened you use it. Rather, call DisplayNode()
  650.     if you need to fix up the name.
  651.     
  652.     Again A0 returns a pointer to the first line. (Which will always be
  653.     a pointer to the free space given).
  654.     
  655.    INPUTS
  656.     file node structure - the file whose name you wish to display
  657.     free space          - free memory to hold name, 100 bytes should be enough
  658.     marked list         - pointer to marked list, if no marked list point to
  659.                           a null byte.
  660.     file handle structure
  661.                         - structure you got from OpenFileBase()
  662.     size of marked list - Size of marked list, null if no list
  663.     name offset         - Start printing name at this letter...
  664.     name size           - Space available for name
  665.     
  666.    SEE ALSO
  667.     DisplayNode()     
  668.     
  669. dfb.library/DateToAscii                              dfb.library/DateToAscii
  670.  
  671.    NAME
  672.     DateToAscii - Converts date in DFB format to an ascii string
  673.  
  674.    SYNOPSIS
  675.     DateToAscii(buffer, day, month, year);                                                     
  676.                 A0      D0   D1     D2
  677.                 
  678.     VOID = DateToAscii(STRPTR *, UBYTE, UBYTE, UWORD);
  679.     
  680.    FUNCTION
  681.     Converts a date in the format of day, month & year to null terminated
  682.     ascii text in the format: dd/mmm/yyyy: E.g: 12/May/1994.
  683.     
  684.    INPUTS
  685.     Buffer - a text buffer to store the date in, allow at least 12 bytes.
  686.     day    - the day, 1->31.
  687.     month  - the month, 1->12.
  688.     year   - the year 0->9999.
  689.     
  690.    SEE ALSO
  691.     ConvertTime(), TimeToAscii(), AsciiToTime(), AsciiToDate()
  692.     
  693. dfb.library/TimeToAscii                              dfb.library/TimeToAscii
  694.  
  695.    NAME
  696.     TimeToAscii - Converts time in DFB format to an ascii string
  697.  
  698.    SYNOPSIS
  699.     TimeToAscii(buffer, min, hour, format);
  700.                 A0      D0   D1    D2
  701.     
  702.     VOID = TimeToAscii(STRPTR *, UBYTE, UBYTE, UBYTE);
  703.           
  704.    FUNCTION
  705.     Converts time in the format, minute and hour to a null terminating
  706.     ascii string. E.g: 12:15am.
  707.     
  708.    INPUTS
  709.     buffer - a text buffer to store the time in, allow at least 8 bytes.
  710.     min    - the minute past the hour
  711.     hour   - the hour in the day
  712.     format - either 12 or 24. (12 hour time adds 'am' or 'pm')
  713.     
  714.    SEE ALSO
  715.     ConvertTime(), DateToAscii(), AsciiToTime(), AsciiToDate()         
  716.  
  717. dfb.library/GetFileDir                                dfb.library/GetFileDir
  718.  
  719.    NAME
  720.     GetFileDir - Gets file's full directory path from name.
  721.  
  722.    SYNOPSIS
  723.     path = GetFileDir(file name, free memory);
  724.     A0                A0         D0    
  725.                
  726.     char *GetFileDir(char *filename, char *freememory);
  727.  
  728.    FUNCTION
  729.     First it will check whether another process has already loaded the path 
  730.     names and if it has it will share the data with it.
  731.     
  732.     Using the file name given, searches all of MAXs file paths (including
  733.     file path, 40 optional file paths and the paths listed in the text
  734.     file filepaths.text) to get the file's full directory path.
  735.     
  736.     E.g: if the file to search for was demofile.dms and the file paths were:
  737.     
  738.     hd1:filepath/
  739.     hd2:newfiles/newfile/
  740.     hd3:oldfiles/
  741.     
  742.     This function would try to get locks on the following files:
  743.     
  744.     hd1:filepath/demofile.dms
  745.     hd2:newfiles/newfile/demofile.dms
  746.     hd3:oldfiles/demofile.dms
  747.     
  748.     Until a sucessful lock was found, indicating which path the file was in.
  749.     
  750.     If this function is succesful (i.e: the file is found) then A0 will
  751.     point to the free memory given (which should be at least 124 bytes long)
  752.     else it will be null. The free memory will have a null terminating
  753.     string containing the file's full path and name.
  754.     
  755.    INPUTS
  756.     name - the name of the file to be found (with *NO* directory information)
  757.     free memory - at least 124 bytes to store full path
  758.  
  759. dfb.library/FindFile                                    dfb.library/FindFile
  760.  
  761.    NAME
  762.     FindFile - Get a file's node structure from a file name
  763.  
  764.    SYNOPSIS      
  765.     file node, position  = FindFile(options, file name, datafile);
  766.      A0       D1                    D0       A0         A1        
  767.                
  768.     struct dfbFile *FindFile(int options, char *filename, char *datafile);
  769.  
  770.    FUNCTION
  771.     Performs a very quick search through dfb:dfb.data to find the node
  772.     structure which contains the file name. This function is much quicker
  773.     than doing a series of ReadNextFile()'s and checking the names by hand.
  774.     
  775.    INPUTS
  776.     A0 - a pointer to the file name to search for, case is unimportant.
  777.     D0 - find file options, FF_POS will also return the file's position in
  778.          the file base in D1.
  779.     A1 - Keep this NULL. In future versions of dfb (probably v1.3) this will
  780.          be the data file (dfb.data) to load.
  781.  
  782.     
  783. dfb.library/IsMarked                                    dfb.library/IsMarked   
  784.  
  785.    NAME
  786.     IsMarked - determine if a file has been marked (tagged)     
  787.     
  788.    SYNOPSIS
  789.     tagged = IsMarked(marked list, file name, marked list size);
  790.     D0                A0           A1         D0
  791.     
  792.     int = IsMarked(char *list, char *filename, int listsize);    
  793.     
  794.    FUNCTION
  795.     Searches the marked file list for the file name given in A1, returns a
  796.     1 if the file was found or a 0 if the file is not in the list. 
  797.     
  798.    INPUTS
  799.     A0 - Pointer to the marked file list    
  800.     A1 - Null terminating string containing the file name to search for,
  801.          case unimportant
  802.     D0 - Size of the marked file list
  803.     
  804.    SEE ALSO      
  805.     LoadMarkedList(), SaveMarkedList(), AddMarkedList(), SubMarkedList()
  806.  
  807. dfb.library/Decrement                                 dfb.library/Decrement   
  808.  
  809.    NAME
  810.     Decrement - decrements the number of files in the file base by 1
  811.     
  812.    SYNOPSIS
  813.     Decrement(handle structure);
  814.               A0
  815.  
  816.     VOID = Decrement (struct dfbFileBase *handle);
  817.     
  818.    FUNCTION
  819.     Modifies the internal file count in dfb.data. This function first reads
  820.     from dfb.data to determine the file number, then decrements this count 
  821.     by 1 (If number of files is greater than zero). This function will then
  822.     change OF_FILES accordingly in the handle structure.
  823.  
  824.     This function should _ONLY_ be called after making a call to ModifyFile()
  825.     when you change a file's status to ASTALAVISTA.
  826.  
  827.    INPUT
  828.     A0 - the handle structure you got from OpenFileBase()
  829.  
  830.    SEE ALSO
  831.     Increment() (Not public yet)
  832.         
  833. dfb.library/AsciiToDate                              dfb.library/AsciiToDate
  834.  
  835.    NAME
  836.     AsciiToDate - converts ascii text string to dfb date data
  837.     
  838.    SYNOPSIS
  839.     day month year =  AsciiToDate(date);
  840.     D0  D1    D2                  A0
  841.         
  842.    FUNCTION
  843.     Converts a date of the form:
  844.     
  845.     dd/mmm/yy 
  846.     
  847.     to the hex numbers for the day of the week, month of the year and the
  848.     year.
  849.     
  850.     E.g:
  851.     
  852.     12/Jan/95
  853.     
  854.        Would makae D0=12, D1=1, D2=1995
  855.        
  856.    INPUT
  857.     A0 - A pointer to a null terminated text string in the form of the date
  858.          above
  859.  
  860.    SEE ALSO
  861.     ConvertTime(), DateToAscii(), TimeToAscii(), AsciiToTime()
  862.     
  863. dfb.library/AsciiToTime                              dfb.library/AsciiToTime
  864.  
  865.    NAME
  866.     AsciiToTime - converts a null terminated ascii string to dfb time data
  867.     
  868.    SYNOPSIS
  869.     hours mins = AsciiToTime(time);
  870.     D0    D1                 A0
  871.         
  872.    FUNCTION
  873.     Converts time in the form:
  874.     
  875.     hh:mm ?m
  876.     
  877.     to the hex number for hours in the day, minutes past the hour.
  878.     
  879.     E.g:
  880.     
  881.     12:30am
  882.     
  883.     Would make: D0=12, D1=30
  884.     
  885.    INPUT
  886.     A0 - pointer to null terminated ascii string with time
  887.     
  888.    SEE ALSO     
  889.     ConvertTime(), DateToAscii(), DateToAscii(), AsciiToTime()
  890.  
  891. dfb.library/LoadPrefs                                  dfb.library/LoadPrefs
  892.  
  893.    NAME
  894.     LoadPrefs - loads a copy of dfb preferences into memory
  895.  
  896.    SYNOPSIS
  897.     preferences = LoadPrefs (prefs file);
  898.     A0                       A0
  899.     
  900.     struct preferences  = LoadPrefs(STRPTR *);
  901.     
  902.    FUNCTION
  903.     This functions loads the file dfbprefs:dfb.prefs into memory, it also
  904.     fixes the pointers in the structure also fills the vector pf_length.
  905.     I.e: pf_length, pf_sections, se_nextsection(s) are corrected.
  906.     
  907.     This function is automatically called when the OpenFileBase() function
  908.     is called and as a result the structure returned from OpenFileBase() has
  909.     a pointer to dfb preferences.
  910.      
  911.     Remember to free the memory taken by the preferences when finished. The
  912.     length is given in pf_length.
  913.  
  914.     If no preferences file is found this will load a copy of the default
  915.     settings.
  916.     
  917.    INPUTS
  918.     A0 - the name of the preference file you wish to load. If you are using
  919.          the default preferences file set this to 0. 
  920.  
  921.    SEE ALSO
  922.     SavePrefs(), AddSection()
  923.  
  924. dfb.library/AddSection                                dfb.library/AddSection
  925.  
  926.    NAME
  927.     AddSection - adds a file section to dfb. (the preferences file)
  928.     
  929.    SYNOPSIS
  930.     sucess = AddSection(prefs file, section);
  931.     D0                  A0          A1
  932.     
  933.     ULONG  = AddSection(STRPTR *, struct section *); 
  934.  
  935.    FUNCTION
  936.     This function appends a copy of the section given to the end of the
  937.     preferences file. The section *must* be initialized correctly,
  938.     i.e: all ascii strings null terminating, section number shouldn't be
  939.     greater than 65,000 etc.
  940.     
  941.     If D0=0 then this function was successful.
  942.     
  943.    INPUTS
  944.     A0 - A pointer to the preferences file you wish to add the section too.
  945.          If you wish to add it to the default set A0=0.
  946.     A1 - Pointer to an initialized section to add.
  947.     
  948.    SEE ALSO
  949.     LoadPrefs(), SavePrefs()         
  950.          
  951. dfb.library/SavePrefs                                  dfb.library/SavePrefs
  952.  
  953.    NAME
  954.     SavePrefs - saves your copy of dfb preferences
  955.  
  956.    SYNOPSIS
  957.     sucess = SavePrefs(preferences file, preferences, freememory?, anaylse links?)
  958.     D0                 A0                A1           D0           D1     
  959.  
  960.     ULONG  = SavePrefs(STRPTR *, struct preferences *, ULONG, ULONG);    
  961.     
  962.    FUNCTION
  963.     Saves your copy of the preferences over the old copy, this function
  964.     handles all the necessary work. 
  965.  
  966.     If D0 is not equal to zero then an error occured
  967.     
  968.    INPUTS
  969.     A0 - The preferences file you wish to overwrite, zero if you want to
  970.          save over the default preferences file.         
  971.     A1 - A pointer to the preferences
  972.     D0 - Free the memory used by the preferences? 1=yes
  973.     D1 - Analyse links? i.e traverse section data going from section to
  974.          section and not believing pf_length as a guide to preferences length
  975.  
  976.    SEE ALSO
  977.     LoadPrefs(), AddSection()
  978.                                 
  979. dfb.library/AddUser                                      dfb.library/AddUser
  980.  
  981.    NAME
  982.     AddUser - adds a user to dfb's user base             
  983.    
  984.    SYNOPSIS
  985.     sucess = AddUser(file, user);
  986.     D0               A0    A1
  987.     
  988.     ULONG = AddUser(STRPTR *, struct user);
  989.     
  990.    FUNCTION
  991.     This adds a user to dfb's userbase (usually kept in dfbusers:dfb.user)
  992.     other than that this function does not do anything special.
  993.     
  994.     If D0 is not equal to zero then an error occured.
  995.     
  996.    INPUTS
  997.     A0 - The user base you wish to add a user to, if zero then add it to
  998.          default user base file (dfbusers:dfb.user)                       
  999.     A1 - A pointer to the user structure of the user you wish to add, this
  1000.          must be properly initialized.         
  1001.  
  1002.    SEE ALSO
  1003.     GetUser(), SaveUser()
  1004.    
  1005. dfb.library/GetUser                                      dfb.library/GetUser
  1006.  
  1007.    NAME
  1008.     GetUser - Loads a user from the dfb.user file
  1009.     
  1010.    SYNOPSIS
  1011.     sucess new = GetUser(user file, free memory, user name, preferences, user #);
  1012.     D0     D1            A0         A1           A2         A3           D0       
  1013.  
  1014.     ULONG ULONG = GetUser(STRPTR *, BPTR, STRPTR *, struct preferences *, 
  1015.                           ULONG);
  1016.     
  1017.    FUNCTION
  1018.     This function loads a user from dfb's user file, there are two methods
  1019.     of reading in a user:
  1020.     
  1021.     1) Read the nth user of the user file.
  1022.     2) Read in a user by the specified name.
  1023.  
  1024.     If D0 (sucess) = -1 then this function did not work.
  1025.     
  1026.     Method 1:
  1027.     
  1028.     Clear A2 since we are loading the nth user. Set D0 to be the user number.
  1029.     Set all other registers as specified in INPUT. If you load in the first
  1030.     user (D0=1) this function will return the number of users in the user
  1031.     base in D0. 
  1032.     
  1033.     Method 2:
  1034.     
  1035.     Set A2 to point to the null terminated user name. Clear D0. Set all
  1036.     other registers as specified in INPUT. If this function is sucessful
  1037.     the user number of this user will be returned in D0. If the user was
  1038.     not found DFB will attempt to create a user node. If DFB creates one 
  1039.     for you it will set D1=1 to indicate this user wasn't previously in the
  1040.     user base. If you wish to keep that user you must call AddUser(). You
  1041.     must retain the user number if you wish to save/modify this user.
  1042.         
  1043.    INPUT
  1044.     A0 - a pointer to the user base we wish to load a user from. If default
  1045.          set this to null.
  1046.     A1 - free memory to put the user node in. It should be length us_sizeof.
  1047.     A2 - name of user - if we are looking for a user by name
  1048.     A3 - pointer to the preferences
  1049.     D0 - user number to load - if we are looking for the nth user
  1050.     
  1051.    SEE ALSO
  1052.     AddUser(), SaveUser()
  1053.     
  1054. dfb.library/SaveUser                                    dfb.library/SaveUser
  1055.  
  1056.    NAME
  1057.     SaveUser - saves (modifies) a user to the user base (DOES NOT ADD!)
  1058.  
  1059.    SYNOPSIS
  1060.     sucess = SaveUser(user file, user, user number);
  1061.     D0                A0         A1    D0
  1062.     
  1063.     ULONG = SaveUser(STRPTR *, struct user *, ULONG);
  1064.     
  1065.    FUNCTION
  1066.     Saves a new user struct over an old one. This functions requies you
  1067.     to specify which number the user is. You would have got this number
  1068.     from the corresponding call to GetUser(). If Everything went ok then
  1069.     D0=0.
  1070.     
  1071.     N.B: This function does not add a user to the user base but merely 
  1072.     overwrites an old one. You can change the name of the user in the user
  1073.     struct if you desire but you should be careful that another user hasn't
  1074.     the same name. Since a call to GetUser will locate the first user with
  1075.     the corresponding name.  
  1076.     
  1077.    INPUTS
  1078.     A0 - The dfb.user file you wish to write to. Set this to zero for the
  1079.          default file.
  1080.     A1 - A pointer to a user structure you wish to write
  1081.     D0 - The user number that was returned from GetUser()
  1082.  
  1083.    SEE ALSO
  1084.     AddUser(), GetUser()
  1085.     
  1086. dfb.library/OnUpload                                    dfb.library/OnUpload
  1087.  
  1088.    NAME
  1089.     OnUpload - executes the command in the second column of DFBArchivers.
  1090.                                         
  1091.    SYNOPSIS
  1092.     ok = OnUpload(path and filename, preferences);
  1093.     D0            A0                 A1
  1094.     
  1095.     ULONG = OnUpload(STRPTR *, struct preferences *);
  1096.     
  1097.    FUNCTION
  1098.     When this function is called, GetFileList will first examine the
  1099.     extension of the filename. (E.g .lha, .lzh etc), it will then locate the
  1100.     correct row and then it will execute the command found in the second
  1101.     box on that row. Replacing the '<>' with the path and filename given.
  1102.  
  1103.     This function is generally called by ReadDFB when the user has uploaded
  1104.     a new file. Generally the command in the box is used to strip other
  1105.     BBS adds or add in the BBS's add or whatever the user has specified.
  1106.  
  1107.    INPUTS
  1108.     path and filename - a pointer to the file name (including full path)
  1109.                         which you wish to use.
  1110.     preferences - a pointer to a copy of DFB's preferences, this can be got
  1111.                   by a call to either LoadPrefs() or OpenFileBase() the later                        
  1112.                   having a pointer to preferences in the handle structure
  1113.                   at OF_PREFERNCES.)
  1114.  
  1115.    SEE ALSO
  1116.     GetFileList(), GetFileIDDiz()    
  1117.     
  1118. dfb.library/GetFilePaths                            dfb.library/GetFilePaths      
  1119.  
  1120.    NAME
  1121.     GetFilePaths -- Returns a pointer to a global read only structure which
  1122.                     contains all the file file paths used by MAXS / DFB. (V2)
  1123.                                         
  1124.    SYNOPSIS
  1125.     FilePaths = GetFilePaths();
  1126.     A0            
  1127.     
  1128.     struct FilePaths *GetFilePaths();
  1129.  
  1130.    FUNCTION
  1131.     This function loads maxs bbs:maxsbbs.config and gets the file file path
  1132.     and 40 optional file paths, it also loads the file FilePaths.text and
  1133.     loads in all the file paths. If dfb.library already has a copy in
  1134.     memory it will return a pointer.
  1135.  
  1136.     DO NOT write to this. It is for global use only.
  1137.  
  1138.     NB: V2 refers to the V1.2 release, V3 referes to the V1.3 release.
  1139.     
  1140.    RESULTS
  1141.     FilePaths - a pointer to a read only structure containing file path 
  1142.                 pointers. NULL return means failure.
  1143.    
  1144.    SEE ALSO
  1145.     GetFileDir() 
  1146.  
  1147. dfb.library/EditFile                                    dfb.library/EditFile
  1148.  
  1149.    NAME
  1150.     EditFile -- loads up a GUI on the MAX's screen. (V3)
  1151.      
  1152.    SYNOPSIS
  1153.     Change = EditFile(filetoedit, handle, editedfile);
  1154.     D0                A0          A1      A2
  1155.     
  1156.     ULONG EditFile(struct dfbFile *, struct dfbFileBase *, struct dfbFile *);
  1157.  
  1158.    FUNCTION
  1159.     Loads up a GUI on the correct MAX's screen, this function will take
  1160.     care of all file base modifications, it will take care of *everything*,
  1161.     the finally edited file node will be filled into the editedfile structure.
  1162.     This structure *MUST* be of MAX_NODE_SIZE. 
  1163.     
  1164.    INPUTS
  1165.     filetoedit - a pointer to the original file node, this must be in
  1166.                  the dfbdata:dfb.data file. EditFile uses FindFile() to
  1167.                  search for the node's file name to modify the file
  1168.                  in the filebase.
  1169.     handle     - pointer to a file base structure
  1170.     editedfile - empty structure to be filled in
  1171.     
  1172.    RESULTS
  1173.     Change     - returns 1 if anything was changed.                 
  1174.  
  1175. dfb.library/StealMaxsDevice                      dfb.library/StealMaxsDevice
  1176.  
  1177.    NAME
  1178.     StealMaxsDevice -- Steals the device that MAX's is using. (V3)
  1179.      
  1180.    SYNOPSIS
  1181.     Success = StealMaxsDevice(IORequest, Node);
  1182.     D0                        A0         D0    
  1183.  
  1184.     ULONG StealMaxsDevice(struct IORequest *, UBYTE);
  1185.     
  1186.    FUNCTION
  1187.     This function 'steals' the serial.device or whatever device MAX's
  1188.     is using and lets a door programme use it. It is inteded for door
  1189.     programmes only. It enables the door programme to interact directly
  1190.     with the serial device by using IOReqest type functions, e.g DoIO() etc.
  1191.     You need to supply a IORequest structure to be initialised. Also the
  1192.     node number you are using. This number is given in the command
  1193.     line argument when your door is loaded. 
  1194.  
  1195.     This function needs MaxsPatch to be running.
  1196.  
  1197.     To return control back to MAX'S BBS run ReleaseMaxsDevice()
  1198.     
  1199.     It returns 0 if everything is ok or else DFB_ERR_MEM (no memory) or
  1200.     DFB_ERR_PATCH (when patch is not running).    
  1201.    
  1202.    INPUTS
  1203.     IORequest - empty request structure
  1204.     Node - MAX's node, *NOT* 0.
  1205.     
  1206.    RESULT
  1207.     IORequest is filled in, Message/Reply port is created for you.
  1208.     
  1209.    SEE ALSO
  1210.     ReleaseMaxsDevice() 
  1211.  
  1212. dfb.library/ReleaseMaxsDevice                  dfb.library/ReleaseMaxsDevice
  1213.  
  1214.    NAME
  1215.     ReleaseMaxsDevice -- Releases device taken by StealMaxsDevice(). (V3)
  1216.      
  1217.    SYNOPSIS
  1218.     ReleaseMaxsDevice(IORequest, Node);
  1219.                       A0         D0    
  1220.  
  1221.     void ReleaseMaxsDevice(struct IORequest *, UBYTE);
  1222.     
  1223.    FUNCTION
  1224.     This function releases control of the serial device back to MAX's BBS.
  1225.     This function should be called before returning back to MAX's. 
  1226.     
  1227.    INPUTS
  1228.     IORequest - empty request structure
  1229.     Node - MAX's node, *NOT* 0     
  1230.  
  1231.    SEE ALSO
  1232.     StealMaxsDevice()             
  1233.  
  1234. dfb.library/GetMarkedListNext                  dfb.library/GetMarkedListNext
  1235.  
  1236.    NAME
  1237.     GetMarkedListNext -- Gets the next marked file in the marked list. (V3)
  1238.      
  1239.    SYNOPSIS
  1240.     new offset = GetMarkedListNext(marked list, offset, space for name);
  1241.     D0                             A0           D0      A1    
  1242.  
  1243.     int = GetMarkedListNext(char *list, int offset, char *name);
  1244.     
  1245.    FUNCTION
  1246.     This function is used to traverse a marked file list, successively
  1247.     callings this function you can process each marked file. 
  1248.     
  1249.     Offset contains an offset from where to start reading the marked list,
  1250.     when you first call this function set it to zero. Then replace
  1251.     offset by new offset for sucessive calls. New offset will return
  1252.     zero when there are no more files. The next marked file will be
  1253.     copied to the pointer supplied in A0.
  1254.         
  1255.    INPUTS
  1256.     A0 - Pointer to the marked file list
  1257.     D0 - Offset, set this to zero or the last value returned from
  1258.          GetMarkedListNext
  1259.     A1 - Buffer to place file name in         
  1260.  
  1261.    SEE ALSO
  1262.     LoadMarkedList(), SaveMarkedList(), AddMarkedList(), SubMarkedList(),
  1263.     IsMarked()    
  1264.